package com.urule.service;

import java.util.List;

import com.bstek.urule.console.database.manager.group.GroupManager;
import com.bstek.urule.console.database.manager.user.UserManager;

import com.bstek.urule.console.database.model.Group;
import com.bstek.urule.console.database.model.User;
import com.bstek.urule.console.database.service.user.UserService;
import com.bstek.urule.exception.RuleException;

/**
 * URULE支持接口的方式导入系统用户，选择该类型后系统不支持用户注册，改名，邮箱调整，密码调整等操作。
 * 若没有使用第三方系统用户（即用的是本地urule库），请一定注释此类
 */
//@Service(UserService.BEAN_ID)
public class DefaultUserService implements UserService {

	/**
	 * 获取用户对象
	 * @param account 用户账号
	 * @return 用户对象
	 */
	@Override
	public User get(String account) {
		// FIXME 请使用第三方数据源；以下示例还是读取的本地urule_user库中用户数据
		User user=UserManager.ins.get(account);
		if(user!=null){
			// 必须得绑定群组
			List<Group> groups = GroupManager.ins.createQuery().list(account);
			user.setGroups(groups);
		}
		return user;
	}

	/**
	 * 用户密码验证
	 * @param account 用户账号
	 * @param password 密码
	 * @return 用户对象(如果有初始化默认的团队信息，则需要定义User对象的groups属性)
	 */
	@Override
	public User validate(String account, String password) {
		// FIXME 请自行实现读取第三方数据库用户表，使用urule默认的登录页面会进入该方法...
		// 注意： 以下是演示，还是读取本地数据库urule_user表中用户数据
		User user=get(account);
		if(user!=null&&password.equals(user.getPassword())){
			return user;
		}
		throw new RuleException("用户登录账号或者是密码不正确！");
	}

}
